package net.zoneland.knowledge.model;

import java.io.Serializable;
import java.util.StringJoiner;

/**
 * 附件预览参数.
 */
public class AttachmentPreviewParam implements Serializable {

    private static final long serialVersionUID = -3047564867453031421L;

    /**
     * 文件id,字符串长度小于32.
     */
    private String id;

    /**
     * 文件名(必须带文件后缀).
     */
    private String name;

    /**
     * 文件大小，单位为B(文件真实大小，否则会出现异常).
     */
    private int size;

    /**
     * 应用侧文档下载地址（需要打通wps服务端到应用侧下载服务的网络策略）.
     */
    private String downloadUrl;

    /**
     * 限制预览页数，整数数字，不限制为0.
     */
    private int previewPages;

    /**
     * 文件水印参数信息，为空则不需要水印.
     */
    private WaterMark waterMark;

    @Override
    public String toString() {
        return new StringJoiner(", ", AttachmentPreviewParam.class.getSimpleName() + "[", "]")
                .add("id='" + id + "'")
                .add("name='" + name + "'")
                .add("size=" + size)
                .add("downloadUrl='" + downloadUrl + "'")
                .add("previewPages=" + previewPages)
                .add("waterMark=" + waterMark)
                .toString();
    }

    /**
     * 获取 文件id字符串长度小于32.
     *
     * @return id 文件id字符串长度小于32.
     */
    public String getId() {
        return this.id;
    }

    /**
     * 设置 文件id字符串长度小于32.
     *
     * @param id 文件id字符串长度小于32.
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * 获取 文件名(必须带文件后缀).
     *
     * @return name 文件名(必须带文件后缀).
     */
    public String getName() {
        return this.name;
    }

    /**
     * 设置 文件名(必须带文件后缀).
     *
     * @param name 文件名(必须带文件后缀).
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取 文件大小，单位为B(文件真实大小，否则会出现异常).
     *
     * @return size 文件大小，单位为B(文件真实大小，否则会出现异常).
     */
    public int getSize() {
        return this.size;
    }

    /**
     * 设置 文件大小，单位为B(文件真实大小，否则会出现异常).
     *
     * @param size 文件大小，单位为B(文件真实大小，否则会出现异常).
     */
    public void setSize(int size) {
        this.size = size;
    }

    /**
     * 获取 应用侧文档下载地址（需要打通wps服务端到应用侧下载服务的网络策略）.
     *
     * @return downloadUrl 应用侧文档下载地址（需要打通wps服务端到应用侧下载服务的网络策略）.
     */
    public String getDownloadUrl() {
        return this.downloadUrl;
    }

    /**
     * 设置 应用侧文档下载地址（需要打通wps服务端到应用侧下载服务的网络策略）.
     *
     * @param downloadUrl 应用侧文档下载地址（需要打通wps服务端到应用侧下载服务的网络策略）.
     */
    public void setDownloadUrl(String downloadUrl) {
        this.downloadUrl = downloadUrl;
    }

    /**
     * 获取 限制预览页数，整数数字，不限制为0.
     *
     * @return previewPages 限制预览页数，整数数字，不限制为0.
     */
    public int getPreviewPages() {
        return this.previewPages;
    }

    /**
     * 设置 限制预览页数，整数数字，不限制为0.
     *
     * @param previewPages 限制预览页数，整数数字，不限制为0.
     */
    public void setPreviewPages(int previewPages) {
        this.previewPages = previewPages;
    }

    /**
     * 获取 文件水印参数信息，为空则不需要水印.
     *
     * @return waterMark 文件水印参数信息，为空则不需要水印.
     */
    public WaterMark getWaterMark() {
        return this.waterMark;
    }

    /**
     * 设置 文件水印参数信息，为空则不需要水印.
     *
     * @param waterMark 文件水印参数信息，为空则不需要水印.
     */
    public void setWaterMark(WaterMark waterMark) {
        this.waterMark = waterMark;
    }
}
